home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / crabshow / code.lua next >
Text File  |  2005-07-16  |  18KB  |  526 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky04.ogg")
  8.     local pokus = getRestartCount()
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.  
  15.         room.uvod = 10 + random(10)
  16.         room.poslvykrik = -1
  17.         room.pocetvykriku = 0
  18.         room.venku = 1
  19.         room.obaloncich = random(20) + 40
  20.         room.omeste = random(2)
  21.         room.okrabech = 0
  22.         room.osose = random(4000) + 3000
  23.         if pokus > 1 and random(100) < 50 then
  24.             room.opocitech = random(1500) + 1000
  25.         else
  26.             room.opocitech = -1
  27.         end
  28.  
  29.         return function()
  30.             if no_dialog() and isReady(small) and isReady(big) then
  31.                 if room.uvod > 0 then
  32.                     if cihla.X == cihla.XStart and cihla.Y == cihla.YStart then
  33.                         room.uvod = room.uvod - 1
  34.                     else
  35.                         room.uvod = -1
  36.                         room.venku = 0
  37.                     end
  38.                 end
  39.                 if room.osose > 0 then
  40.                     room.osose = room.osose - 1
  41.                 end
  42.                 if room.opocitech > 0 then
  43.                     room.opocitech = room.opocitech - 1
  44.                 end
  45.                 if room.obaloncich > 0 then
  46.                     if balon1.dir ~= dir_no or balon2.dir ~= dir_no or balon3.dir ~= dir_no or lbalon.dir ~= dir_no or rbalon.dir ~= dir_no then
  47.                         room.obaloncich = room.obaloncich - 1
  48.                     end
  49.                 end
  50.                 if room.uvod == 0 then
  51.                     room.uvod = 100 + random(200)
  52.                     room.pocetvykriku = room.pocetvykriku + 1
  53.                     pom1 = random(2)
  54.                     if pom1 == room.poslvykrik then
  55.                         pom1 = 2
  56.                     end
  57.                     if isIn(room.pocetvykriku, {5, 11, 16}) then
  58.                         pom1 = 3
  59.                     end
  60.                     room.poslvykrik = pom1
  61.                     switch(pom1){
  62.                         [3] = function()
  63.                             addv(3, "sec-v-zavreny")
  64.                             addm(10, "sec-m-kamen")
  65.                         end,
  66.                         default = function()
  67.                             if 0 <= pom1 and pom1 <= 2 then
  68.                                 addv(3, "sec-v-ven"..pom1)
  69.                             end
  70.                         end,
  71.                     }
  72.                 elseif room.venku == 0 then
  73.                     room.venku = 1
  74.                     addm(random(10) + 10, "sec-m-ven"..random(2))
  75.                 elseif room.obaloncich == 0 then
  76.                     room.obaloncich = -1
  77.                     addm(5, "sec-m-balonky")
  78.                 elseif room.omeste == 0 and random(3000) == 0 then
  79.                     room.omeste = 1
  80.                     addv(10, "sec-v-mesto")
  81.                 elseif room.okrabech == 0 and random(2000) == 0 then
  82.                     room.okrabech = 1
  83.                     addm(20, "sec-m-krab")
  84.                     addv(10, "sec-v-ktery")
  85.                     addm(5, "sec-m-dole"..random(2))
  86.                     addv(5 + random(20), "sec-v-normalni"..random(2))
  87.                 elseif room.osose == 0 then
  88.                     room.osose = -1
  89.                     addv(40, "sec-v-socha")
  90.                     addm(random(10) + 4, "sec-m-situace")
  91.                     adddel(random(15) + 5)
  92.                     planSet(drzka, "cinnost", 1)
  93.                 elseif room.opocitech == 0 then
  94.                     room.opocitech = -1
  95.                     addv(20, "sec-v-pocit")
  96.                     addm(5, "sec-m-pocity")
  97.                     addv(0, "sec-v-pockej")
  98.                     addv(random(30) + 40, "sec-v-oci")
  99.                     addm(4, "sec-m-program")
  100.                 end
  101.             end
  102.         end
  103.     end
  104.  
  105.     -- -------------------------------------------------------------
  106.     local function prog_init_drzka()
  107.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  108.  
  109.         drzka.cinnost = 0
  110.         drzka.afaze = 0
  111.  
  112.         return function()
  113.             switch(drzka.cinnost){
  114.                 [1] = function()
  115.                     setanim(drzka, "a5d2a10d11a11d4a10d4a11d4a10d4a11d4a10d?20-40a9")
  116.                     drzka.cinnost = drzka.cinnost + 1
  117.                 end,
  118.                 [2] = function()
  119.                     goanim(drzka)
  120.                 end,
  121.             }
  122.             drzka:updateAnim()
  123.         end
  124.     end
  125.  
  126.     -- -------------------------------------------------------------
  127.     local function prog_init_lbalon()
  128.         return function()
  129.             if lbalon.dir == dir_left then
  130.                 if lbalon.afaze == 0 then
  131.                     lbalon.afaze = 3
  132.                 else
  133.                     lbalon.afaze = lbalon.afaze - 1
  134.                 end
  135.             elseif lbalon.dir == dir_right then
  136.                 if lbalon.afaze == 3 then
  137.                     lbalon.afaze = 0
  138.                 else
  139.                     lbalon.afaze = lbalon.afaze + 1
  140.                 end
  141.             elseif lbalon.X == krab.X and lbalon.Y - 3 == krab.Y then
  142.                 if lbalon.afaze == 3 then
  143.                     lbalon.afaze = 0
  144.                 else
  145.                     lbalon.afaze = lbalon.afaze + 1
  146.                 end
  147.                 krab.beh = 1
  148.             end
  149.             lbalon:updateAnim()
  150.         end
  151.     end
  152.  
  153.     -- -------------------------------------------------------------
  154.     local function prog_init_rbalon()
  155.         return function()
  156.             if rbalon.dir == dir_left then
  157.                 if rbalon.afaze == 0 then
  158.                     rbalon.afaze = 3
  159.                 else
  160.                     rbalon.afaze = rbalon.afaze - 1
  161.                 end
  162.             elseif rbalon.dir == dir_right then
  163.                 if rbalon.afaze == 3 then
  164.                     rbalon.afaze = 0
  165.                 else
  166.                     rbalon.afaze = rbalon.afaze + 1
  167.                 end
  168.             elseif rbalon.X - 5 == krab.X and rbalon.Y - 3 == krab.Y then
  169.                 if rbalon.afaze == 0 then
  170.                     rbalon.afaze = 3
  171.                 else
  172.                     rbalon.afaze = rbalon.afaze - 1
  173.                 end
  174.                 krab.beh = 1
  175.             end
  176.             rbalon:updateAnim()
  177.         end
  178.     end
  179.  
  180.     -- -------------------------------------------------------------
  181.     local function prog_init_balon1()
  182.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  183.  
  184.         balon1.pauza = random(200)
  185.  
  186.         return function()
  187.             if balon1.dir == dir_left then
  188.                 if balon1.afaze == 0 then
  189.                     balon1.afaze = 3
  190.                 else
  191.                     balon1.afaze = balon1.afaze - 1
  192.                 end
  193.             elseif balon1.dir == dir_right then
  194.                 if balon1.afaze == 3 then
  195.                     balon1.afaze = 0
  196.                 else
  197.                     balon1.afaze = balon1.afaze + 1
  198.                 end
  199.             elseif balon1.pauza == 0 then
  200.                 balon1.pauza = random(320) - 60
  201.             end
  202.             if balon1.pauza < 0 then
  203.                 if balon1.afaze == 3 then
  204.                     balon1.afaze = 0
  205.                 else
  206.                     balon1.afaze = balon1.afaze + 1
  207.                 end
  208.                 balon1.pauza = balon1.pauza + 1
  209.             else
  210.                 balon1.pauza = balon1.pauza - 1
  211.             end
  212.             balon1:updateAnim()
  213.         end
  214.     end
  215.  
  216.     -- -------------------------------------------------------------
  217.     local function prog_init_balon2()
  218.         return function()
  219.             if balon2.dir == dir_left then
  220.                 if balon2.afaze == 0 then
  221.                     balon2.afaze = 3
  222.                 else
  223.                     balon2.afaze = balon2.afaze - 1
  224.                 end
  225.             elseif balon2.dir == dir_right then
  226.                 if balon2.afaze == 3 then
  227.                     balon2.afaze = 0
  228.                 else
  229.                     balon2.afaze = balon2.afaze + 1
  230.                 end
  231.             end
  232.             balon2:updateAnim()
  233.         end
  234.     end
  235.  
  236.     -- -------------------------------------------------------------
  237.     local function prog_init_balon3()
  238.         return function()
  239.             if balon3.dir == dir_left then
  240.                 if balon3.afaze == 0 then
  241.                     balon3.afaze = 3
  242.                 else
  243.                     balon3.afaze = balon3.afaze - 1
  244.                 end
  245.             elseif balon3.dir == dir_right then
  246.                 if balon3.afaze == 3 then
  247.                     balon3.afaze = 0
  248.                 else
  249.                     balon3.afaze = balon3.afaze + 1
  250.                 end
  251.             end
  252.             balon3:updateAnim()
  253.         end
  254.     end
  255.  
  256.     -- -------------------------------------------------------------
  257.     local function prog_init_hlava1()
  258.         return function()
  259.         end
  260.     end
  261.  
  262.     -- -------------------------------------------------------------
  263.     local function prog_init_hlava2()
  264.         return function()
  265.         end
  266.     end
  267.  
  268.     -- -------------------------------------------------------------
  269.     local function prog_init_hlava3()
  270.         return function()
  271.         end
  272.     end
  273.  
  274.     -- -------------------------------------------------------------
  275.     local function prog_init_krab()
  276.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  277.  
  278.         krab.beh = 0
  279.         krab.oci = 1
  280.         krab.voci = 1
  281.         krab.mrac = 1
  282.         krab.nohy = 1
  283.         krab.afaze = 10
  284.  
  285.         return function()
  286.             if krab.beh == 1 then
  287.                 if krab.nohy == 2 then
  288.                     krab.nohy = 0
  289.                 else
  290.                     krab.nohy = krab.nohy + 1
  291.                 end
  292.                 krab.beh = 0
  293.             else
  294.                 krab.nohy = 1
  295.             end
  296.             if random(20) == 1 then
  297.                 krab.mrac = 1 - krab.mrac
  298.             end
  299.             if xdist(small, krab) == 0 and ydist(small, krab) <= 0 then
  300.                 if small.X < krab.X then
  301.                     krab.oci = 0
  302.                 elseif small.X > krab.X + 3 then
  303.                     krab.oci = 2
  304.                 else
  305.                     krab.oci = 1
  306.                 end
  307.             elseif xdist(big, krab) == 0 and ydist(big, krab) <= 0 then
  308.                 if big.X < krab.X - 1 then
  309.                     krab.oci = 0
  310.                 elseif big.X > krab.X + 3 then
  311.                     krab.oci = 2
  312.                 else
  313.                     krab.oci = 1
  314.                 end
  315.             elseif odd(game_getCycles()) then
  316.                 local rand11 = random(11)
  317.                 switch(rand11){
  318.                     [6] = function()
  319.                         if krab.voci == 0 then
  320.                             krab.voci = 3
  321.                         else
  322.                             krab.voci = krab.voci - 1
  323.                         end
  324.                     end,
  325.                     [9] = function()
  326.                         krab.voci = random(4)
  327.                     end,
  328.                     default = function()
  329.                         if 0 <= rand11 and rand11 <= 5 then
  330.                             if krab.voci == 3 then
  331.                                 krab.voci = 0
  332.                             else
  333.                                 krab.voci = krab.voci + 1
  334.                             end
  335.                         end
  336.                     end,
  337.                 }
  338.                 if krab.voci == 3 then
  339.                     krab.oci = 1
  340.                 else
  341.                     krab.oci = krab.voci
  342.                 end
  343.             end
  344.             krab.afaze = krab.oci + krab.mrac * 3 + krab.nohy * 6
  345.             krab:updateAnim()
  346.         end
  347.     end
  348.  
  349.     -- -------------------------------------------------------------
  350.     local function prog_init_shrimp()
  351.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  352.  
  353.         shrimp.afaze = 4
  354.  
  355.         return function()
  356.             if odd(game_getCycles()) then
  357.                 switch(krab.oci){
  358.                     [0] = function()
  359.                         shrimp.afaze = 2
  360.                     end,
  361.                     [2] = function()
  362.                         shrimp.afaze = 0
  363.                     end,
  364.                     [1] = function()
  365.                         switch(krab.voci){
  366.                             [1] = function()
  367.                                 local rand10 = random(10)
  368.                                 switch(rand10){
  369.                                     [0] = function()
  370.                                         shrimp.afaze = 3
  371.                                     end,
  372.                                     default = function()
  373.                                         if 1 <= rand10 and rand10 <= 6 then
  374.                                             shrimp.afaze = 4
  375.                                         else
  376.                                             shrimp.afaze = 1
  377.                                         end
  378.                                     end,
  379.                                 }
  380.                             end,
  381.                             [3] = function()
  382.                                 local rand10 = random(10)
  383.                                 if 0 <= rand10 and rand10 <= 3 then
  384.                                         shrimp.afaze = 3
  385.                                 elseif 4 <= rand10 and rand10 <= 9 then
  386.                                     shrimp.afaze = 4
  387.                                 else
  388.                                     shrimp.afaze = 1
  389.                                 end
  390.                             end,
  391.                             default = function()
  392.                                 switch(math.mod(game_getCycles(), 8)){
  393.                                     [0] = function()
  394.                                         shrimp.afaze = 1
  395.                                     end,
  396.                                     [1] = function()
  397.                                         shrimp.afaze = 1
  398.                                     end,
  399.                                     [4] = function()
  400.                                         shrimp.afaze = 3
  401.                                     end,
  402.                                     [5] = function()
  403.                                         shrimp.afaze = 3
  404.                                     end,
  405.                                     default = function()
  406.                                         shrimp.afaze = 4
  407.                                     end,
  408.                                 }
  409.                             end,
  410.                         }
  411.                     end,
  412.                 }
  413.             end
  414.             shrimp:updateAnim()
  415.         end
  416.     end
  417.  
  418.     -- -------------------------------------------------------------
  419.     local function prog_init_krabik()
  420.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  421.  
  422.         krabik.spi = 0
  423.         krabik.afaze = 0
  424.  
  425.         return function()
  426.             if odd(game_getCycles()) then
  427.                 if krabik.spi > 0 then
  428.                     krabik.afaze = 1
  429.                     krabik.spi = krabik.spi - 1
  430.                 else
  431.                     switch(shrimp.afaze){
  432.                         [0] = function()
  433.                             krabik.afaze = 5
  434.                         end,
  435.                         [1] = function()
  436.                             krabik.afaze = 2
  437.                         end,
  438.                         [2] = function()
  439.                             krabik.afaze = 4
  440.                         end,
  441.                         [3] = function()
  442.                             krabik.afaze = 3
  443.                         end,
  444.                         [4] = function()
  445.                             krabik.afaze = 0
  446.                         end,
  447.                     }
  448.                     if random(100) == 14 then
  449.                         krabik.spi = random(30)
  450.                     end
  451.                 end
  452.             end
  453.             krabik:updateAnim()
  454.         end
  455.     end
  456.  
  457.     -- --------------------
  458.     local update_table = {}
  459.     local subinit
  460.     subinit = prog_init_room()
  461.     if subinit then
  462.         table.insert(update_table, subinit)
  463.     end
  464.     subinit = prog_init_drzka()
  465.     if subinit then
  466.         table.insert(update_table, subinit)
  467.     end
  468.     subinit = prog_init_lbalon()
  469.     if subinit then
  470.         table.insert(update_table, subinit)
  471.     end
  472.     subinit = prog_init_rbalon()
  473.     if subinit then
  474.         table.insert(update_table, subinit)
  475.     end
  476.     subinit = prog_init_balon1()
  477.     if subinit then
  478.         table.insert(update_table, subinit)
  479.     end
  480.     subinit = prog_init_balon2()
  481.     if subinit then
  482.         table.insert(update_table, subinit)
  483.     end
  484.     subinit = prog_init_balon3()
  485.     if subinit then
  486.         table.insert(update_table, subinit)
  487.     end
  488.     subinit = prog_init_hlava1()
  489.     if subinit then
  490.         table.insert(update_table, subinit)
  491.     end
  492.     subinit = prog_init_hlava2()
  493.     if subinit then
  494.         table.insert(update_table, subinit)
  495.     end
  496.     subinit = prog_init_hlava3()
  497.     if subinit then
  498.         table.insert(update_table, subinit)
  499.     end
  500.     subinit = prog_init_krab()
  501.     if subinit then
  502.         table.insert(update_table, subinit)
  503.     end
  504.     subinit = prog_init_shrimp()
  505.     if subinit then
  506.         table.insert(update_table, subinit)
  507.     end
  508.     subinit = prog_init_krabik()
  509.     if subinit then
  510.         table.insert(update_table, subinit)
  511.     end
  512.     return update_table
  513. end
  514. local update_table = prog_init()
  515.  
  516.  
  517. -- -----------------------------------------------------------------
  518. -- Update
  519. -- -----------------------------------------------------------------
  520. function prog_update()
  521.     for key, subupdate in pairs(update_table) do
  522.         subupdate()
  523.     end
  524. end
  525.  
  526.